home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / sendke1a / simkeys.bas next >
BASIC Source File  |  1999-03-10  |  5KB  |  143 lines

  1. Attribute VB_Name = "simKeysModule"
  2. Option Explicit
  3.  
  4. Type POINTAPI
  5.     x As Long
  6.     y As Long
  7. End Type
  8.  
  9. Public Const KEYEVENTF_EXTENDEDKEY = &H1
  10. Public Const KEYEVENTF_KEYUP = &H2
  11.  
  12. Public Declare Sub keybd_event Lib "user32.dll" _
  13.                     (ByVal bVk As Byte, _
  14.                      ByVal bScan As Byte, _
  15.                      ByVal dwFlags As Long, _
  16.                      ByVal dwExtraInfo As Long)
  17.  
  18. Public Const MOUSEEVENTF_MOVE = &H1         '  mouse move
  19. Public Const MOUSEEVENTF_LEFTDOWN = &H2     '  left button down
  20. Public Const MOUSEEVENTF_LEFTUP = &H4       '  left button up
  21. Public Const MOUSEEVENTF_RIGHTDOWN = &H8    '  right button down
  22. Public Const MOUSEEVENTF_RIGHTUP = &H10     '  right button up
  23. Public Const MOUSEEVENTF_MIDDLEDOWN = &H20  '  middle button down
  24. Public Const MOUSEEVENTF_MIDDLEUP = &H40    '  middle button up
  25. Public Const MOUSEEVENTF_ABSOLUTE = &H8000  '  absolute move
  26.  
  27. Public Declare Sub mouse_event Lib "user32.dll" _
  28.                     (ByVal dwFlags As Long, _
  29.                      ByVal dx As Long, _
  30.                      ByVal dy As Long, _
  31.                      ByVal cButtons As Long, _
  32.                      ByVal dwExtraInfo As Long)
  33.  
  34. Public Declare Function OemKeyScan Lib "user32.dll" _
  35.                     (ByVal wOemChar As Integer) As Long
  36.                     
  37. Public Declare Function CharToOem Lib "user32.dll" _
  38.                     Alias "CharToOemA" _
  39.                     (ByVal lpszSrc As String, _
  40.                      ByVal lpszDst As String) As Long
  41.                      
  42. Public Declare Function VkKeyScan Lib "user32.dll" _
  43.                     Alias "VkKeyScanA" _
  44.                     (ByVal cChar As Byte) As Integer
  45.                     
  46. Public Declare Function MapVirtualKey Lib "user32.dll" _
  47.                     Alias "MapVirtualKeyA" _
  48.                     (ByVal uCode As Long, _
  49.                      ByVal uMapType As Long) As Long
  50.                      
  51. Public Declare Function ClientToScreen Lib "user32.dll" _
  52.                     (ByVal hwnd As Long, _
  53.                      lpPoint As POINTAPI) As Long
  54.                      
  55. Public Declare Function GetSystemMetrics Lib "user32.dll" _
  56.                     (ByVal nIndex As Long) As Long
  57.                     
  58. Public Declare Function GetCursorPos Lib "user32.dll" _
  59.                     (lpPoint As POINTAPI) As Long
  60.                     
  61. 'Public Declare Function GetForegroundWindow Lib "user32.dll" () As Long
  62.  
  63. 'Public Declare Function SetForegroundWindow Lib "user32.dll" _
  64.                     (ByVal hwnd As Long) As Long
  65.                     
  66. 'Public Declare Function GetDesktopWindow Lib "user32.dll" () As Long
  67.  
  68. Public Declare Sub Sleep Lib "kernel32.dll" _
  69.                     (ByVal dwMilliSeconds As Long)
  70.                     
  71. Type OSVERSIONINFO
  72.     dwOSVersionInfoSize As Long
  73.     dwMajorVersion As Long
  74.     dwMinorVersion As Long
  75.     dwBuildNumber As Long
  76.     dwPlatformId As Long
  77.     szCSDVersion As String * 128      '  Maintenance string for PSS usage
  78. End Type
  79.  
  80. '  dwPlatformId defines:
  81. Public Const VER_PLATFORM_WIN32s = 0
  82. Public Const VER_PLATFORM_WIN32_WINDOWS = 1
  83. Public Const VER_PLATFORM_WIN32_NT = 2
  84.  
  85. Declare Function GetVersionEx Lib "kernel32.dll" _
  86.                     Alias "GetVersionExA" _
  87.                     (lpVersionInformation As OSVERSIONINFO) As Long
  88.  
  89. Public Const SM_CXSCREEN = 0
  90. Public Const SM_CYSCREEN = 1
  91.  
  92. ' Sends a single character using keybd_event
  93. '   Note that this function does not set shift state
  94. '   (By pressing down the shift key or setting the shift keys state)
  95. '   and it doesn't handle extended keys.
  96. Public Sub SendAKey(ByVal vsChar As String)
  97.     Dim nVK As Integer
  98.     Dim nShift As Integer
  99.     Dim lOEMScan As Long
  100.     Dim lOEMShift As Long
  101.     Dim sOEMChar As String
  102.     
  103.     ' The VkKeyScan function translates a character to the corresponding
  104.     ' virtual-key code and shift state for the current keyboard.
  105.     ' If the function succeeds, the low-order byte of the return value
  106.     ' contains the virtual-key code and the high-order byte contains
  107.     ' the shift state.
  108.     nVK = VkKeyScan(CByte(Asc(vsChar)))
  109.     nShift = nVK \ (2 ^ 8)
  110.     nVK = nVK And &HFF
  111.     
  112.     ' The CharToOem function translates a string into the OEM-defined character set. '
  113.     ' (OEM stands for original equipment manufacturer.)
  114.     ' This function supersedes the AnsiToOem function.
  115.     sOEMChar = "  "     ' 2 character buffer
  116.     CharToOem Left$(vsChar, 1), sOEMChar
  117.     
  118.     ' the OemKeyScan function maps OEM ASCII codes 0 through 0x0FF
  119.     ' into the OEM scan codes and shift states.
  120.     ' The function provides information that allows a program to
  121.     ' send OEM text to another program by simulating keyboard input.
  122.     ' If the function succeeds, the low-order word of the return value
  123.     ' contains the scan code of the given OEM character, and the
  124.     ' high-order word contains the shift state.
  125.     lOEMScan = OemKeyScan(CInt(Asc(sOEMChar)))
  126.     lOEMShift = lOEMScan \ (2 ^ 8)
  127.     lOEMScan = lOEMScan And &HFF
  128.     
  129.     ' Send the key down
  130.     keybd_event CByte(nVK), CByte(lOEMScan), 0, 0
  131.     
  132.     ' Send the key up
  133.     keybd_event CByte(nVK), CByte(lOEMScan), KEYEVENTF_KEYUP, 0
  134. End Sub
  135.  
  136. Public Sub MySendKeys(ByVal vsStr As String)
  137.     Dim x As Long
  138.     
  139.     For x = 1 To Len(vsStr)
  140.         SendAKey Mid$(vsStr, x, 1)
  141.     Next
  142. End Sub
  143.